function startMatch() {
    const msg = {
        action: 'startMatch'
    };
    sendMessage(msg);
}

function sendChallenge(targetName) {
    const msg = {
        action: 'sendChallenge',
        params: {
            targetName: targetName,
        }
    };
    sendMessage(msg);
}

function handleChallenge(targetName, accept) {
    const msg = {
        action: 'handleChallenge',
        params: {
            targetName: targetName,
            accept: accept
        }
    };
    sendMessage(msg);
}

function playChess(x, y) {
    const msg = {
        action: 'playChess',
        params: {
            x: x,
            y: y
        }
    };
    sendMessage(msg);
}

function sendUndo() {
    const msg = {
        action: 'sendUndo'
    }
    sendMessage(msg);
}

function handleUndo(accept) {
    const msg = {
        action: 'handleUndo',
        params: {
            accept: accept
        }
    };
    sendMessage(msg);
}

function seeLastChess() {
    const msg = {
        action: 'seeLastChess'
    };
    sendMessage(msg);
}

function leaveGame() {
    const msg = {
        action: 'leaveGame'
    };
    sendMessage(msg);
}

function watchGame(roomId) {
    const msg = {
        action: 'watchGame',
        params: {
            roomId: roomId
        }
    };
    sendMessage(msg);
    $('.roomId').text("房间号: " + roomId);
}

function leaveWatch() {
    const msg = {
        action: 'leaveWatch'
    };
    sendMessage(msg);
}

function enterRoom() {
    const roomIdStr = $.trim($('#targetRoomId').val());
    if (!/^[1-9]\d*$/.test(roomIdStr)) {
        alert('请输入正整数');
        return;
    }
    const roomId = parseInt(roomIdStr, 10);
    watchGame(roomId);
}

function fixBoard() {
    const msg = {
        action: 'fixBoard'
    };
    sendMessage(msg);
}

function sendMessage(msg) {
    if (websocket !== null) {
        websocket.send(JSON.stringify(msg));
    }
}